home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / retinarave / fade.i < prev    next >
Text File  |  1980-01-03  |  2KB  |  113 lines

  1. ;================================================
  2. ; fade routine v2.01 (bugfix by me!!!!)
  3. ; a0 -> to pallet to fade to
  4. ; a1 -> to pallet to fade from
  5. ; a3 -> colour list in copper
  6. ; d7  = Number of colours
  7. ;================================================
  8.  
  9. fade
  10.     swap d7
  11.     move #14,d0
  12. bright
  13.     moveq #2,d1
  14. nibble
  15.     swap d7
  16.     move d7,d2
  17.     swap d7
  18. col
  19.     move d2,d3
  20.     lsl #1,d3
  21.     move 0(a0,d3.w),d4
  22.     move 0(a1,d3.w),d5
  23.     cmp #2,d1
  24.     bne.b not2
  25.  
  26.     and #$f00,d4
  27.     and #$f00,d5
  28.     cmp d5,d4
  29.     beq.b doneadd
  30.     blo.b sub2
  31.     add #$100,0(a1,d3.w)
  32.     bra.b doneadd
  33. sub2
  34.     sub #$100,0(a1,d3.w)
  35.     bra.b doneadd
  36. not2
  37.     cmp #1,d1
  38.     bne.b not1
  39.     and #$f0,d4
  40.     and #$f0,d5
  41.     cmp d5,d4
  42.     beq.b doneadd
  43.     blo.b sub1
  44.     add #$10,0(a1,d3.w)
  45.     bra.b doneadd
  46. sub1
  47.     sub #$10,0(a1,d3.w)
  48.     bra.b doneadd
  49. not1
  50.     cmp #0,d1
  51.     bne.b doneadd
  52.     and #$f,d4
  53.     and #$f,d5
  54.     cmp d5,d4
  55.     beq.b doneadd
  56.     blo.b sub0
  57.     addq #$1,0(a1,d3.w)
  58.     bra.b doneadd
  59. sub0
  60.     subq #$1,0(a1,d3.w)
  61. doneadd
  62.     dbra d2,col
  63. ; change immediate value in d6 the higher it is the slower the fade
  64.     moveq #1,d6
  65.     bsr.b pause
  66.  
  67.     move.l a1,a2
  68.     swap d7
  69.     move.w d7,d2
  70.     swap d7
  71.     move.l a3,-(sp)
  72.  
  73. copy3    move.w (a2)+,2(a3)
  74.     addq.l #4,a3
  75.     dbra d2,copy3
  76.  
  77.     move.l (sp)+,a3
  78.     
  79.     dbra d1,nibble
  80.  
  81.     dbra d0,bright
  82.     rts
  83.  
  84.  
  85. ;================================================
  86. ; pause
  87. ; d6.w = pause time in 1/50 sec
  88. ;================================================
  89.  
  90. pause
  91.     move.w vbl,d7
  92. waitframe
  93.     cmp vbl,d7
  94.     beq.b waitframe
  95.  
  96.     dbra d6,pause
  97.     rts
  98.  
  99.  
  100.  
  101.  
  102. **************************************************
  103. ; in interupt routine put:-
  104.  
  105. ; eor.w #$FFFF,vbl
  106.  
  107. ; in variables put:-
  108.  
  109. ;vbl    dc.w 0
  110.  
  111. **************************************************
  112.  
  113.